/**
 * 工具类
 */
module.exports = {
	/**
	 * scene解码
	 */
	scene_decode(e) {
		if (e === undefined) return {};
		let scene = decodeURIComponent(e),
			params = scene.split(','),
			data = {};

		for (let i in params) {
			var val = params[i].split(':');
			val.length > 0 && val[0] && (data[val[0]] = val[1] || null);
		}

		return data;
	},

	/**
	 * scene解码，对应格式 k=v&k=v
	 */
	aj_scene_decode(e) {
		if (e === undefined) return {};
		let scene = decodeURIComponent(e),
			params = scene.split('&'),
			data = {};

		for (let i in params) {
			var val = params[i].split('=');
			val.length > 0 && val[0] && (data[val[0]] = val[1] || null);
		}

		return data;
	},

	/**
	 * 格式化日期格式 (用于兼容ios Date对象)
	 */
	format_date(time) {
		// 将xxxx-xx-xx的时间格式，转换为 xxxx/xx/xx的格式
		return time.replace(/\-/g, '/');
	},

	/**
	 * 对象转URL
	 */
	urlEncode(data) {
		var _result = [];

		for (var key in data) {
			var value = data[key];

			if (value.constructor == Array) {
				value.forEach((_value) => {
					_result.push(key + '=' + _value);
				});
			} else {
				_result.push(key + '=' + value);
			}
		}

		return _result.join('&');
	},

	/**
	 * 遍历对象
	 */
	objForEach(obj, callback) {
		Object.keys(obj).forEach((key) => {
			callback(obj[key], key);
		});
	},

	/**
	 * 是否在数组内
	 */
	inArray(search, array) {
		for (var i in array) {
			if (array[i] == search) {
				return true;
			}
		}

		return false;
	},

	/**
	 * 判断是否为正整数
	 */
	isPositiveInteger(value) {
		return /(^[0-9]\d*$)/.test(value);
	},

	query() {
		var query = {};
		// #ifdef H5
		var search = window.location.search.substring(1);
		var vars = search.split("&");
		for (var i = 0; i < vars.length; i++) {
			var pair = vars[i].split("=");
			query[pair[0]] = pair[1];
		}
		return query;
		// #endif
		return query;
	},

	/**
	 * 返回app版本号
	 */
	appVersion() {
		// #ifdef APP-PLUS
		return plus.runtime.version;
		// #endif
		return '';
	},
	/**
	 ** 加法函数，用来得到精确的加法结果
	 ** 说明：javascript的加法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
	 ** 调用：accAdd(arg1,arg2)
	 ** 返回值：arg1加上arg2的精确结果
	 **/
	accAdd(arg1, arg2) {
		var r1, r2, m, c;
		try {
			r1 = arg1.toString().split(".")[1].length;
		} catch (e) {
			r1 = 0;
		}
		try {
			r2 = arg2.toString().split(".")[1].length;
		} catch (e) {
			r2 = 0;
		}
		c = Math.abs(r1 - r2);
		m = Math.pow(10, Math.max(r1, r2));
		if (c > 0) {
			var cm = Math.pow(10, c);
			if (r1 > r2) {
				arg1 = Number(arg1.toString().replace(".", ""));
				arg2 = Number(arg2.toString().replace(".", "")) * cm;
			} else {
				arg1 = Number(arg1.toString().replace(".", "")) * cm;
				arg2 = Number(arg2.toString().replace(".", ""));
			}
		} else {
			arg1 = Number(arg1.toString().replace(".", ""));
			arg2 = Number(arg2.toString().replace(".", ""));
		}
		return (arg1 + arg2) / m;
	},

	unique(str, val) {
		var obj = {};
		for (var i = 0; i < str.length; i++) {
			var key = str[i];
			if (obj[key]) {
				obj[key]++;
			} else {
				obj[key] = 1;
			}
		}
		var arr = Object.keys(obj);
		for (var i = 0; i < arr.length; i++) {
			if (arr[i] == val) {
				return obj[arr[i]]
			}
		}
	},

	sort(arr) {
		for (var i = 0; i < arr.length - 1; i++) {
			for (var j = i + 1; j < arr.length; j++) {
				if (arr[i].id > arr[j].id) {
					var t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
				}
			}
		}
		return arr;
	},
	// n为保留的小数位数，s为需要格式化的数字
	moneyFormat(s, n) {
		n = n > 0 && n <= 20 ? n : 2;
		s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
		let l = s.split(".")[0].split("").reverse();
		let r = s.split(".")[1];
		let t = "";
		if (s < 0) {
			l = ((Math.abs(s.split(".")[0])) + "").split("").reverse();
		}
		for (let i = 0; i < l.length; i++) {
			t += l[i] + ((i + 1) % 3 === 0 && (i + 1) !== l.length ? "," : "");
		}
		if (s < 0) {
			t += "-";
		}
		let result = t.split("").reverse().join("") + "." + r;
		if (result == undefined || result == null || result.indexOf('NaN') >= 0 || result.indexOf('Undefined') >=
			0) {
			result = '0.00';
		}
		return result;
	},
	/**
	 * 按尺寸获取图片
	 * @param {*} url 图片路径
	 * @param {*} width 图片宽度
	 * @param {*} height 图片高度
	 * @returns 
	 */
	getRealImgUrl(url, width, height) {
		let realUrl = url;
		width = width ? Math.floor(width) : 0;
		height = height ? Math.floor(height) : 0;
		let filterUrls = [];
		if (!width || !url || url.indexOf('?') > -1 || filterUrls.indexOf(url) > -1) {
			return realUrl;
		}
		// 符合条件的oss压缩尺寸处理
		// oss压缩
		if (url.indexOf('.oss-') > -1 || url.indexOf('img.eartland.com') > -1) {
			realUrl = `${url}?x-oss-process=image/resize,m_lfit,w_${width}`;
			if (height) {
				realUrl = `${realUrl},h_${height}`
			}
		}
		// 七牛云压缩
		if (url.indexOf('imgcdn.ecbao.cn') > -1) {
			realUrl = `${url}?imageMogr2/thumbnail/${width}`;
			if (height) {
				realUrl = `${realUrl}x${height}`
			}
		}

		return realUrl;
	},
};